package xkp.lesson3;

import java.util.LinkedList;

public class TestLinkedList {
	public static void main(String[] args) {
		LinkedList<String> linkedList = new LinkedList<String>();
		linkedList.add("111");
		linkedList.add("222");
		linkedList.add("333");
		linkedList.add("444");
		//默认不管是ArrayList还是LinkedList add都是在尾部添加数据
		linkedList.addFirst("000");
		linkedList.addFirst("555");
		System.out.println(linkedList);
		linkedList.removeFirst();
		linkedList.removeLast();
		//LinkedList的功能比ArrayList还要丰富一些
		
		//目前我们了解到的数据结构有数组 链表
		//常用的数据结构还有队列与栈
		//队列：先进先出    一队人排成纵队通过隧道    第一个人先进，第一个人先出
		//栈：先进后出      把数据向水桶中放   最先放入的最后才能取出
		
		//使用LinkedList可以完整的模拟队列与栈
		//1、使用LinkedList模拟队列
		
		linkedList.clear();
		//在LinkedList中add与addList一模一样
		//队列添加数据，队列长度边长
		//队列取数据 队列长度变短
		for(int i = 1; i <= 10; i++) {
			linkedList.addLast(""+i);
		}
		
		while(linkedList.size()>0) {
			String str = linkedList.removeFirst();
			System.out.println(str);
		}
		
		System.out.println(linkedList.size());
		
		System.out.println("***********使用LinkedList模拟栈***********");
		//2、使用LinkedList模拟栈
		//先进后出
		//栈类型的数据经常会对应两个经典的方法 E pop();push(E t)
		for(int i = 1; i <= 10; i++) {
			linkedList.push(""+i);
		}
		
		while(linkedList.size()>0) {
			String str = linkedList.pop();
			System.out.println(str);
		}
	}
}
